package main

import (
	"fmt"
	"time"
)

func main() {

	// // 获取当前时间
	// timeObj := time.Now()
	// fmt.Printf("值为%v -- 类型是%T\n", timeObj, timeObj)
	// fmt.Println(timeObj.Date())

	// // time对象获取
	// year := timeObj.Year()
	// month := timeObj.Month()
	// day := timeObj.Day()
	// hour := timeObj.Hour()
	// minute := timeObj.Minute()
	// second := timeObj.Second()
	// fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)

	// 格式化日期 timeObj.Format()
	// 2006-01-02 03:04:05	12小时制
	// 2006-01-02 15:04:05	24小时制
	// fmt.Println(timeObj.Format("2006/01/02 03:04:05"))
	// fmt.Println(timeObj.Format("2006/01/02 15:04:05"))

	// // 获取当前时间戳(1970年1月1日至今时间的总毫秒数，也称为Unix时间戳)
	// unixtime := timeObj.Unix()
	// fmt.Println(unixtime)
	// // 纳秒时间戳
	// unixNatime := timeObj.UnixNano()
	// fmt.Println(unixNatime)

	// // 时间戳转日期字符串 time.Unix(Unix[int64], UnixNano[int64])
	// unixTime1 := timeObj.Unix()
	// unixTime2 := 1608986779
	// timeObj1 := time.Unix(unixTime1, 0)
	// timeObj2 := time.Unix(int64(unixTime2), 0)
	// fmt.Println(timeObj1, timeObj2)
	// fmt.Println(timeObj1.Format("2006-01-02 15:04:05"))

	// // 日期字符串转时间戳
	// var str = "2020-04-26 15:46:52" // 待转字符串
	// var tmp = "2006-01-02 15:04:05" // 模板
	// timeObj3, _ := time.ParseInLocation(tmp, str, time.Local)
	// fmt.Println(timeObj3)
	// fmt.Println(timeObj3.Unix())

	// // 时间间隔常量
	// fmt.Println(time.Millisecond)
	// fmt.Println(time.Second)
	// fmt.Println(time.Minute)
	// fmt.Println(time.Hour)

	// // 时间操作函数
	// timeObj1 := time.Now()
	// fmt.Println(timeObj1)
	// // 计算某个时间的之前或之后
	// timeObj2 := timeObj1.Add(-time.Hour * 24)
	// fmt.Println(timeObj2)
	// timeObj3 := timeObj1.Add(time.Hour * 24) // 后一天
	// fmt.Println(timeObj3)
	// // 计算两个时间的时间差
	// timeObj4 := timeObj1.Sub(timeObj2)
	// fmt.Println(timeObj4)

	// 定时器
	// 1.time.NewTicker()
	ticker := time.NewTicker(time.Second * 2)
	// 遍历ticker.C启动定时器
	n := 5
	for t := range ticker.C {
		n--
		fmt.Println(t)
		if n == 0 {
			// 停止并回收定时器
			ticker.Stop()
			break
		}
	}

	// // 通过time.Sleep(time.Second)定时
	// for n := 5; n > 0; n-- {
	// 	time.Sleep(time.Second * 3)
	// 	fmt.Println(n)
	// }

}
